/*
 * Copyright 2009 Brook Smith brook.smith@paradise.net.nz.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */
package org.javagenerate.generator.script;

import java.util.ArrayList;
import java.util.List;

import org.javagenerate.generator.BaseGenerator;
import org.javagenerate.generator.MethodDefinition;
import org.javagenerate.generator.NamingUtils;

public class ClassDef extends BaseGenerator {

	private String classname;
	private String patternName;

	private List<MethodDefinition> methods = new ArrayList<MethodDefinition>();

	private List<String> options = new ArrayList<String>();

	public ClassDef(String classname, String patternName) {
		this.classname = classname;
		this.patternName = patternName;
	}

	public String getPatternName() {
		return patternName;
	}

	public void addBeanDefiniation(GenBeanDefinition beanDefinition) {
		beanDefinition.addBean(this);
	}

	public void addBeanDefiniations(List<GenBeanDefinition> beanDefinitions) {
		for (GenBeanDefinition genBeanDefinition : beanDefinitions) {
			addBeanDefiniation(genBeanDefinition);
		}
	}

	@Override
	public String getClassName() {
		return NamingUtils.getSimpleName(classname);
	}

	@Override
	public String getExtends() {
		return null;
	}

	public List<MethodDefinition> getMethods() {
		return methods;
	}

	public List<String> getOptions() {
		return options;
	}

	@Override
	public String getPackageName() {
		return NamingUtils.getPackageName(classname);
	}
}
